package com.cq.hd.product.service;

import com.cq.hd.common.pagination.Page;
import com.cq.hd.product.api.dto.ActiveRedPacketBillPageDto;
import com.cq.hd.product.api.dto.AvailableRedPacketDto;
import com.cq.hd.product.api.dto.MyPrizeRedPacketBillPageDto;
import com.cq.hd.product.api.dto.PointsRedPacketDto;
import com.cq.hd.product.api.vo.ActiveRedPacketBilListVo;
import com.cq.hd.product.api.vo.ActiveRedPacketBillPageVo;
import com.cq.hd.product.api.vo.MyPrizeRedPacketBillPageVo;
import com.cq.hd.product.po.TbActiveRedPacketBillPo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 红包流水表 服务类
 * </p>
 *
 * @author mYunYu
 * @since 2023-11-23
 */
public interface TbActiveRedPacketBillService extends IService<TbActiveRedPacketBillPo> {

    Page<ActiveRedPacketBillPageVo> pageReceive(ActiveRedPacketBillPageDto activeRedPacketBillPageDto);

    Page<MyPrizeRedPacketBillPageVo> pageMyPrizeRedPacket(MyPrizeRedPacketBillPageDto myPrizeRedPacketBillPageDto);

    ActiveRedPacketBillPageVo getByRedPacketId(Long redPacketId, Long userId);

    ActiveRedPacketBillPageVo getRedPacketBillById(Long id);

    List<ActiveRedPacketBillPageVo> listActiveRedPacketBillByRedPacketIds(List<Long> redPacketIds);

    List<ActiveRedPacketBillPageVo> listUsedByBusinessId(Long userId, Long businessId);

    Boolean scanRedPacketBillJob();

    ActiveRedPacketBillPageVo getByActiveIdAndUserId(Long userId, Long activeId);

    Boolean sendPointsRedPacketBill(PointsRedPacketDto pointsRedPacketDto);

    List<ActiveRedPacketBilListVo> activeAvailableList(AvailableRedPacketDto availableRedPacketDto);
}
